package com.dj.service;

import ca.uhn.fhir.rest.param.StringParam;
import org.hl7.fhir.dstu3.model.IdType;
import org.hl7.fhir.dstu3.model.ProcedureRequest;

import java.util.Date;
import java.util.List;

/**
 * 检查申请操作
 * @author cyf
 * @description
 * @create 2018-06-27 13:38
 **/

public interface ProcedureRequestService {

    /**
     * 保存
     * @param procedureRequest
     * @return
     */
    IdType saveProcedureRequest(ProcedureRequest procedureRequest);

    /**
     * 更新检查申请
     * @param id
     * @param procedureRequest
     * @return
     */
    IdType updateProcedureRequest(String id, ProcedureRequest procedureRequest);

    /**
     * 根据id查询
     * @param id
     * @return
     */
    ProcedureRequest getById(String id);

    /**
     * 根据检查项目编码code查询
     * @param code
     * @return
     */
    List<ProcedureRequest> getByCode(StringParam code);

    /**
     * 根据id 和版本查询
     * @param id
     * @param version
     * @return
     */
    ProcedureRequest getByIdAndVersion(String id, String version);

    /**
     * 删除
     * @param id
     * @return
     */
    boolean deleteProcedureRequest(String id);

    /**
     * 获取当前记录的更新时间
     * @param id
     * @return
     */
    Date getLastUpdatTime(String id);

    /**
     * 获取历史版本的更新时间
     * @param id
     * @param version
     * @return
     */
    Date getHistoryLastUpdatTime(String id, String version);



    /**
     * 查询所有历史记录
     * @param id
     * @return
     */
    List<ProcedureRequest> getAllProcedureRequestById(String id);

    Boolean isExist(String patientId, String encounterId);
}
